/*
 * SistemaDelTestSet.h
 *
 *  Created on: Dec 9, 2014
 *      Author: ale
 */
#include "Predictor3.h"
#include "ARPAParser.h"
#include "ParserTestSet.h"

#ifndef PRED_SISTEMADELTESTSET_H_
#define PRED_SISTEMADELTESTSET_H_

class SistemaDelTestSet {
public:
	SistemaDelTestSet(const char* ARPAfile, const char* setPrueba, const char* archivoSalida);
	virtual ~SistemaDelTestSet();\

	Predictor3* procesarARPAfile();
	void procesarSetPrueba();
	void pruebas();

	unsigned int noprecide;



	ParserTestSet *parserTestSet;

	void agregarMejoresTrigramasParaBigramas();
	void agregarMejoresBigramasParaUnigramas();
	void crearOracionEnBaseA(string A, string B);
	void crearOracionEnBaseA(string A);

	void imprimirNoPrecide();

private:
	Predictor3 *heisenberg;
	ARPAParser *parserARPA;

	const char* ARPAfile;
	const char* setPrueba;

	vector<string> parsearSiguienteOracionACompletar();
	vector<double> calcularProbabilidadesDeTrigramas(string trigrama);
	//bigrama extraerBigramaDeTrigrama(trigrama tigrama);
	string calcularTrigramaAInsertar(string bigramaQueLoPrecede);
	int trigramaMenosProbable(vector<double> *probas);
	int NgramaMasProbable(vector<double> *probas);
	string buscarMejorTrigramaQueComplete(string triConMenorProb);
	string tercerPalabraDe(string trigrama);
	string buscarMejorBigramaQueComplete(string triConMenorProb);
	string segundaPalabraDe(string bigrama);


};

#endif /* PRED_SISTEMADELTESTSET_H_ */
